<?php
/**
* 名称：焦点图控制器。
* 描述：焦点图模块相关的控制响应程式。
*/
final class Controller_Slide_Self extends Controller_Public_Move{
    /**
    * 移动程式设置。
    * @var    array
    * @access protected
    */
    protected $MoveSetup=array(
        'table'=>'slide'
    );

    /**
    * 描述：列表之视图程式。
    * @access protected
    * @return void
    */
    protected function Listview(){
        $arguments=array(
            'type'=>Route::GetArguments('type')
        );
        //~
        $data=array(
            'meta'=>array_merge(
                Model_Common_OUI::Breadcrumb(
                    Model_Slide::OUI_Breadcrumb('gather'),
                    Model_Slide::OUI_Breadcrumb('list_'.$arguments['type'],'text')
                ),
                Model_Common_OUI::Button(array(
                    'text'=>'添加',
                    'link'=>Route::MakeHyperlink(':slide_self::add',array('type'=>$arguments['type'])),
                )),
                array(
                    'list_title'=>'信息列表'
                )
            ),
            'base'=>self::$Database->GetAll(
                'SELECT * FROM '.self::$Database->Table('slide').' WHERE type=? ORDER BY orderNumber DESC',
                array($arguments['type'])
            ),
            'arguments'=>$arguments
        );
        //~
        self::$Template->Assign('data',$data);
        self::$Template->Display('oui/slide/list.html');
    }

    /**
    * 描述：添加之视图程式。
    * @access protected
    * @return void
    */
    protected function Add(){
        $arguments=array(
            'type'=>Route::GetArguments('type')
        );
        //~
        $data=array(
            'meta'=>array_merge(
                Model_Common_OUI::Breadcrumb(
                    Model_Slide::OUI_Breadcrumb('gather'),
                    Model_Slide::OUI_Breadcrumb('list_'.$arguments['type']),
                    Model_Slide::OUI_Breadcrumb('add')
                ),
                array(
                    'action'=>Route::MakeHyperlink(':slide_self::insert'),
                    'list_title'=>'信息列表'
                )
            ),
            'base'=>array(
                'type'=>$arguments['type']
            )
        );
        //~
        self::$Template->Assign('data',$data);
        self::$Template->Display('oui/slide/form.html');
    }

    /**
    * 描述：添加之响应程式。
    * @access protected
    * @return void
    */
    protected function Insert(){
        $data=array(
            'meta'=>array(
                'table'=>self::$Database->Table('slide')
            ),
            'base'=>Model::Post(Model_Slide::$FormLabel)
        );
        //~
        self::$Database->BeginTransaction();
        $isInsert=self::$Database->Insert($data['meta']['table'],$data['base']);
        if($isInsert){
            $data['base']['id']=self::$Database->LastInsertId();
            //-
            $isUpdate=self::$Database->Update(
                $data['meta']['table'],
                array('orderNumber'=>$data['base']['id']),
                array('sql'=>'id=?','parameters'=>array($data['base']['id']))
            );
            //-
            if($isUpdate){
                self::$Database->Commit();
            }
            else{
                self::$Database->Rollback();
            }
        }
        //~
        $arguments=array(
            'notice'=>'资讯发布成功，3秒钟后自动返回。',
            'link'=>array(
                array('name'=>'继续发布','href'=>Route::MakeHyperlink(':slide_self::add',array('type'=>$data['base']['type']))),
                array('name'=>'前往修改','href'=>Route::MakeHyperlink(':slide_self::edit','id:'.$data['base']['id'])),
                array('name'=>'返回列表','href'=>Route::MakeHyperlink(':slide_self::listview',array('type'=>$data['base']['type'])))
            ),
            'autoTurn'=>array(TRUE,3)
        );
        $this->Feedback($isInsert,$arguments,'发布失败，请稍候再试！');
    }

    /**
    * 描述：修改之视图程式。
    * @access protected
    * @return void
    */
    protected function Edit(){
        $arguments=array(
            'id'=>Route::GetArguments('id'),
            'type'=>Route::GetArguments('type')
        );
        //~
        $data['base']=self::$Database->GetRow(
            'SELECT * FROM '.self::$Database->Table('slide').' WHERE id=?',
            array($arguments['id'])
        );
        $data['meta']=array_merge(
            Model_Common_OUI::Breadcrumb(
                Model_Slide::OUI_Breadcrumb('gather'),
                Model_Slide::OUI_Breadcrumb('list_'.$arguments['type']),
                Model_Slide::OUI_Breadcrumb('edit')
            ),
            Model_Common_OUI::Button(array(
                'text'=>'添加',
                'link'=>Route::MakeHyperlink(':slide_self::edit'),
            )),
            array(
                'action'=>Route::MakeHyperlink(':slide_self::update'),
                'list_title'=>'信息列表'
            )
        );
        //~
        self::$Template->Assign('data',$data);
        self::$Template->Display('oui/slide/form.html');
    }

    /**
    * 描述：修改之响应程式。
    * @access protected
    * @return void
    */
    protected function Update(){
        $data['base']=Model::Post(
            Model_Slide::$FormLabel,
            array('id'=>post('id'))
        );
        $data['condition']=array(
            'sql'=>'id=?',
            'parameters'=>array($data['base']['id'])
        );
        //~
        $isUpdate=self::$Database->Update(self::$Database->Table('slide'),$data['base'],$data['condition']);
        //~
        $arguments=array(
            'notice'=>'资讯修改成功，3秒钟后自动返回。',
            'link'=>array(
                array('name'=>'继续修改','href'=>Route::MakeHyperlink(':slide_self::edit',array('id'=>$data['base']['id'],'type'=>$data['base']['type']))),
                array('name'=>'返回列表','href'=>Route::MakeHyperlink(':slide_self::listview',array('type'=>$data['base']['type'])))
            ),
            'autoTurn'=>array(TRUE,3)
        );
        $this->Feedback($isUpdate,$arguments,'发布失败，请稍候再试！');
    }

    /**
    * 描述：删除之响应删除。
    * @access protected
    * @return void
    */
    protected function Delete(){
        $id=Route::GetArguments('id');
        //~
        $this->Feedback(
            self::$Database->ExecParameterized(
                'DELETE FROM '.self::$Database->Table('slide').' WHERE id=?',array($id)
            ),
            $_SERVER['HTTP_REFERER'],
            '删除失败，请稍候再试！'
        );
    }
}